import { initState } from "./state";
import { complierToFunction } from "./complier/index";

export function initMixin(Vue) {
  Vue.prototype._init = function (options) {
    //
    const vm = this;
    // console.log(options);
    // 实例上有个属性可以获取用户传入的所有属性
    vm.$options = options;

    // 1、初始划状态
    initState(vm);

    if (vm.$options.el) {
      //  数据可以挂载到页面上
      //  反之不用挂载
      vm.$mount(vm.$options.el);
    }
  };
  Vue.prototype.$mount = function (el) {
    el = document.querySelector(el);

    const vm = this;
    const options = vm.$options;
    // 如果是render直接使用render
    // 然后看template函数
    if (!options.render) {
      let template = options.template;
      if (!template && el) {
        template = el.outerHTML;
      }

      const render = complierToFunction(template);
      options.render = render;
      // console.log(template);
    }
    // 如何将模板编译成render函数
  };
}
